// Copyright 2016 Proyectos y Sistemas de Mantenimiento SL (eProsima).
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

/*!
 * @file Object_t.h
 * This header file contains the declaration of the described types in the IDL file.
 *
 * This file was generated by the tool fastddsgen.
 */

#ifndef _FAST_DDS_GENERATED_OBJECT_T_H_
#define _FAST_DDS_GENERATED_OBJECT_T_H_

#include <array>
#include <bitset>
#include <cstdint>
#include <map>
#include <string>
#include <vector>

#include <fastcdr/cdr/fixed_size_string.hpp>
#include <fastcdr/xcdr/external.hpp>
#include <fastcdr/xcdr/optional.hpp>



#if defined(_WIN32)
#if defined(EPROSIMA_USER_DLL_EXPORT)
#define eProsima_user_DllExport __declspec( dllexport )
#else
#define eProsima_user_DllExport
#endif  // EPROSIMA_USER_DLL_EXPORT
#else
#define eProsima_user_DllExport
#endif  // _WIN32

#if defined(_WIN32)
#if defined(EPROSIMA_USER_DLL_EXPORT)
#if defined(OBJECT_T_SOURCE)
#define OBJECT_T_DllAPI __declspec( dllexport )
#else
#define OBJECT_T_DllAPI __declspec( dllimport )
#endif // OBJECT_T_SOURCE
#else
#define OBJECT_T_DllAPI
#endif  // EPROSIMA_USER_DLL_EXPORT
#else
#define OBJECT_T_DllAPI
#endif // _WIN32

namespace eprosima {
namespace fastcdr {
class Cdr;
class CdrSizeCalculator;
} // namespace fastcdr
} // namespace eprosima





/*!
 * @brief This class represents the structure Object_t defined by the user in the IDL file.
 * @ingroup Object_t
 */
class Object_t
{
public:

    /*!
     * @brief Default constructor.
     */
    eProsima_user_DllExport Object_t();

    /*!
     * @brief Default destructor.
     */
    eProsima_user_DllExport ~Object_t();

    /*!
     * @brief Copy constructor.
     * @param x Reference to the object Object_t that will be copied.
     */
    eProsima_user_DllExport Object_t(
            const Object_t& x);

    /*!
     * @brief Move constructor.
     * @param x Reference to the object Object_t that will be copied.
     */
    eProsima_user_DllExport Object_t(
            Object_t&& x) noexcept;

    /*!
     * @brief Copy assignment.
     * @param x Reference to the object Object_t that will be copied.
     */
    eProsima_user_DllExport Object_t& operator =(
            const Object_t& x);

    /*!
     * @brief Move assignment.
     * @param x Reference to the object Object_t that will be copied.
     */
    eProsima_user_DllExport Object_t& operator =(
            Object_t&& x) noexcept;

    /*!
     * @brief Comparison operator.
     * @param x Object_t object to compare.
     */
    eProsima_user_DllExport bool operator ==(
            const Object_t& x) const;

    /*!
     * @brief Comparison operator.
     * @param x Object_t object to compare.
     */
    eProsima_user_DllExport bool operator !=(
            const Object_t& x) const;

    /*!
     * @brief This function copies the value in member label
     * @param _label New value to be copied in member label
     */
    eProsima_user_DllExport void label(
            const std::string& _label);

    /*!
     * @brief This function moves the value in member label
     * @param _label New value to be moved in member label
     */
    eProsima_user_DllExport void label(
            std::string&& _label);

    /*!
     * @brief This function returns a constant reference to member label
     * @return Constant reference to member label
     */
    eProsima_user_DllExport const std::string& label() const;

    /*!
     * @brief This function returns a reference to member label
     * @return Reference to member label
     */
    eProsima_user_DllExport std::string& label();


    /*!
     * @brief This function sets a value in member mId
     * @param _mId New value for member mId
     */
    eProsima_user_DllExport void mId(
            uint32_t _mId);

    /*!
     * @brief This function returns the value of member mId
     * @return Value of member mId
     */
    eProsima_user_DllExport uint32_t mId() const;

    /*!
     * @brief This function returns a reference to member mId
     * @return Reference to member mId
     */
    eProsima_user_DllExport uint32_t& mId();


    /*!
     * @brief This function sets a value in member mTop
     * @param _mTop New value for member mTop
     */
    eProsima_user_DllExport void mTop(
            int32_t _mTop);

    /*!
     * @brief This function returns the value of member mTop
     * @return Value of member mTop
     */
    eProsima_user_DllExport int32_t mTop() const;

    /*!
     * @brief This function returns a reference to member mTop
     * @return Reference to member mTop
     */
    eProsima_user_DllExport int32_t& mTop();


    /*!
     * @brief This function sets a value in member mBottom
     * @param _mBottom New value for member mBottom
     */
    eProsima_user_DllExport void mBottom(
            int32_t _mBottom);

    /*!
     * @brief This function returns the value of member mBottom
     * @return Value of member mBottom
     */
    eProsima_user_DllExport int32_t mBottom() const;

    /*!
     * @brief This function returns a reference to member mBottom
     * @return Reference to member mBottom
     */
    eProsima_user_DllExport int32_t& mBottom();


    /*!
     * @brief This function sets a value in member mLeft
     * @param _mLeft New value for member mLeft
     */
    eProsima_user_DllExport void mLeft(
            int32_t _mLeft);

    /*!
     * @brief This function returns the value of member mLeft
     * @return Value of member mLeft
     */
    eProsima_user_DllExport int32_t mLeft() const;

    /*!
     * @brief This function returns a reference to member mLeft
     * @return Reference to member mLeft
     */
    eProsima_user_DllExport int32_t& mLeft();


    /*!
     * @brief This function sets a value in member mRight
     * @param _mRight New value for member mRight
     */
    eProsima_user_DllExport void mRight(
            int32_t _mRight);

    /*!
     * @brief This function returns the value of member mRight
     * @return Value of member mRight
     */
    eProsima_user_DllExport int32_t mRight() const;

    /*!
     * @brief This function returns a reference to member mRight
     * @return Reference to member mRight
     */
    eProsima_user_DllExport int32_t& mRight();


    /*!
     * @brief This function sets a value in member mXDistance
     * @param _mXDistance New value for member mXDistance
     */
    eProsima_user_DllExport void mXDistance(
            int32_t _mXDistance);

    /*!
     * @brief This function returns the value of member mXDistance
     * @return Value of member mXDistance
     */
    eProsima_user_DllExport int32_t mXDistance() const;

    /*!
     * @brief This function returns a reference to member mXDistance
     * @return Reference to member mXDistance
     */
    eProsima_user_DllExport int32_t& mXDistance();


    /*!
     * @brief This function sets a value in member mYDistance
     * @param _mYDistance New value for member mYDistance
     */
    eProsima_user_DllExport void mYDistance(
            int32_t _mYDistance);

    /*!
     * @brief This function returns the value of member mYDistance
     * @return Value of member mYDistance
     */
    eProsima_user_DllExport int32_t mYDistance() const;

    /*!
     * @brief This function returns a reference to member mYDistance
     * @return Reference to member mYDistance
     */
    eProsima_user_DllExport int32_t& mYDistance();


    /*!
     * @brief This function sets a value in member mDistanceIsValid
     * @param _mDistanceIsValid New value for member mDistanceIsValid
     */
    eProsima_user_DllExport void mDistanceIsValid(
            bool _mDistanceIsValid);

    /*!
     * @brief This function returns the value of member mDistanceIsValid
     * @return Value of member mDistanceIsValid
     */
    eProsima_user_DllExport bool mDistanceIsValid() const;

    /*!
     * @brief This function returns a reference to member mDistanceIsValid
     * @return Reference to member mDistanceIsValid
     */
    eProsima_user_DllExport bool& mDistanceIsValid();


    /*!
     * @brief This function sets a value in member mHeadway
     * @param _mHeadway New value for member mHeadway
     */
    eProsima_user_DllExport void mHeadway(
            float _mHeadway);

    /*!
     * @brief This function returns the value of member mHeadway
     * @return Value of member mHeadway
     */
    eProsima_user_DllExport float mHeadway() const;

    /*!
     * @brief This function returns a reference to member mHeadway
     * @return Reference to member mHeadway
     */
    eProsima_user_DllExport float& mHeadway();


    /*!
     * @brief This function sets a value in member mRealWidth
     * @param _mRealWidth New value for member mRealWidth
     */
    eProsima_user_DllExport void mRealWidth(
            int32_t _mRealWidth);

    /*!
     * @brief This function returns the value of member mRealWidth
     * @return Value of member mRealWidth
     */
    eProsima_user_DllExport int32_t mRealWidth() const;

    /*!
     * @brief This function returns a reference to member mRealWidth
     * @return Reference to member mRealWidth
     */
    eProsima_user_DllExport int32_t& mRealWidth();


    /*!
     * @brief This function sets a value in member mRealHeight
     * @param _mRealHeight New value for member mRealHeight
     */
    eProsima_user_DllExport void mRealHeight(
            int32_t _mRealHeight);

    /*!
     * @brief This function returns the value of member mRealHeight
     * @return Value of member mRealHeight
     */
    eProsima_user_DllExport int32_t mRealHeight() const;

    /*!
     * @brief This function returns a reference to member mRealHeight
     * @return Reference to member mRealHeight
     */
    eProsima_user_DllExport int32_t& mRealHeight();


    /*!
     * @brief This function sets a value in member mWidthHeightIsValid
     * @param _mWidthHeightIsValid New value for member mWidthHeightIsValid
     */
    eProsima_user_DllExport void mWidthHeightIsValid(
            bool _mWidthHeightIsValid);

    /*!
     * @brief This function returns the value of member mWidthHeightIsValid
     * @return Value of member mWidthHeightIsValid
     */
    eProsima_user_DllExport bool mWidthHeightIsValid() const;

    /*!
     * @brief This function returns a reference to member mWidthHeightIsValid
     * @return Reference to member mWidthHeightIsValid
     */
    eProsima_user_DllExport bool& mWidthHeightIsValid();


    /*!
     * @brief This function sets a value in member mXVelocity
     * @param _mXVelocity New value for member mXVelocity
     */
    eProsima_user_DllExport void mXVelocity(
            float _mXVelocity);

    /*!
     * @brief This function returns the value of member mXVelocity
     * @return Value of member mXVelocity
     */
    eProsima_user_DllExport float mXVelocity() const;

    /*!
     * @brief This function returns a reference to member mXVelocity
     * @return Reference to member mXVelocity
     */
    eProsima_user_DllExport float& mXVelocity();


    /*!
     * @brief This function sets a value in member mYVelocity
     * @param _mYVelocity New value for member mYVelocity
     */
    eProsima_user_DllExport void mYVelocity(
            float _mYVelocity);

    /*!
     * @brief This function returns the value of member mYVelocity
     * @return Value of member mYVelocity
     */
    eProsima_user_DllExport float mYVelocity() const;

    /*!
     * @brief This function returns a reference to member mYVelocity
     * @return Reference to member mYVelocity
     */
    eProsima_user_DllExport float& mYVelocity();


    /*!
     * @brief This function sets a value in member mVelocityIsValid
     * @param _mVelocityIsValid New value for member mVelocityIsValid
     */
    eProsima_user_DllExport void mVelocityIsValid(
            bool _mVelocityIsValid);

    /*!
     * @brief This function returns the value of member mVelocityIsValid
     * @return Value of member mVelocityIsValid
     */
    eProsima_user_DllExport bool mVelocityIsValid() const;

    /*!
     * @brief This function returns a reference to member mVelocityIsValid
     * @return Reference to member mVelocityIsValid
     */
    eProsima_user_DllExport bool& mVelocityIsValid();


    /*!
     * @brief This function sets a value in member mDiameter
     * @param _mDiameter New value for member mDiameter
     */
    eProsima_user_DllExport void mDiameter(
            int32_t _mDiameter);

    /*!
     * @brief This function returns the value of member mDiameter
     * @return Value of member mDiameter
     */
    eProsima_user_DllExport int32_t mDiameter() const;

    /*!
     * @brief This function returns a reference to member mDiameter
     * @return Reference to member mDiameter
     */
    eProsima_user_DllExport int32_t& mDiameter();


    /*!
     * @brief This function sets a value in member mDiameterIsValid
     * @param _mDiameterIsValid New value for member mDiameterIsValid
     */
    eProsima_user_DllExport void mDiameterIsValid(
            bool _mDiameterIsValid);

    /*!
     * @brief This function returns the value of member mDiameterIsValid
     * @return Value of member mDiameterIsValid
     */
    eProsima_user_DllExport bool mDiameterIsValid() const;

    /*!
     * @brief This function returns a reference to member mDiameterIsValid
     * @return Reference to member mDiameterIsValid
     */
    eProsima_user_DllExport bool& mDiameterIsValid();


    /*!
     * @brief This function sets a value in member mTrend
     * @param _mTrend New value for member mTrend
     */
    eProsima_user_DllExport void mTrend(
            int32_t _mTrend);

    /*!
     * @brief This function returns the value of member mTrend
     * @return Value of member mTrend
     */
    eProsima_user_DllExport int32_t mTrend() const;

    /*!
     * @brief This function returns a reference to member mTrend
     * @return Reference to member mTrend
     */
    eProsima_user_DllExport int32_t& mTrend();


    /*!
     * @brief This function sets a value in member mScore
     * @param _mScore New value for member mScore
     */
    eProsima_user_DllExport void mScore(
            float _mScore);

    /*!
     * @brief This function returns the value of member mScore
     * @return Value of member mScore
     */
    eProsima_user_DllExport float mScore() const;

    /*!
     * @brief This function returns a reference to member mScore
     * @return Reference to member mScore
     */
    eProsima_user_DllExport float& mScore();


    /*!
     * @brief This function sets a value in member mIntrusion
     * @param _mIntrusion New value for member mIntrusion
     */
    eProsima_user_DllExport void mIntrusion(
            bool _mIntrusion);

    /*!
     * @brief This function returns the value of member mIntrusion
     * @return Value of member mIntrusion
     */
    eProsima_user_DllExport bool mIntrusion() const;

    /*!
     * @brief This function returns a reference to member mIntrusion
     * @return Reference to member mIntrusion
     */
    eProsima_user_DllExport bool& mIntrusion();

private:

    std::string m_label;
    uint32_t m_mId{0};
    int32_t m_mTop{0};
    int32_t m_mBottom{0};
    int32_t m_mLeft{0};
    int32_t m_mRight{0};
    int32_t m_mXDistance{0};
    int32_t m_mYDistance{0};
    bool m_mDistanceIsValid{false};
    float m_mHeadway{0.0};
    int32_t m_mRealWidth{0};
    int32_t m_mRealHeight{0};
    bool m_mWidthHeightIsValid{false};
    float m_mXVelocity{0.0};
    float m_mYVelocity{0.0};
    bool m_mVelocityIsValid{false};
    int32_t m_mDiameter{0};
    bool m_mDiameterIsValid{false};
    int32_t m_mTrend{0};
    float m_mScore{0.0};
    bool m_mIntrusion{false};

};

#endif // _FAST_DDS_GENERATED_OBJECT_T_H_



